www.oSLIK.ru

:: Second Generation ::

Часовой пояс: UTC + 4 часа

Предыдущее посещение: 30янв 02, 2014 5:11 pm Текущее время: 30янв 02, 2014 10:06 pm




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: FAQ начинающего прошивкокопателя.
СообщениеДобавлено: 30фев 01, 2006 3:04 am 
Не в сети
Z-Team member
Z-Team member
Аватара пользователя

Зарегистрирован: 30авг 19, 2004 2:32 pm
Сообщения: 897
========================================================================
Итак нам понадобится :
1. IDA Pro 4.8 (ищем в инете) + WinHEX
2. Документация по архитектуре ARM (12 метров дока !!!) http://dsl.ee.unsw.edu.au/dsl-cdrom/ref ... erence.pdf
3. Документация на процессор OMAP 5910 (качаем с сайта ti.com, эта документация в большинстве своем справедлива для нашего OMAP310)
4. WSSFXBI.exe - прога от Папуаса для выковыривания из свупа бинарников прошивки. (Внизу поста ссылка)
5. Программа от FCA00000 - FCAMem с установленным патчем к ней. ( см раздел Патчи )
6. Список функций прошивки от FCA00000 - наверное самое важное в копании прошивки. O2_14_symbol.rar
7. Также пригодится SDK Симбы с плугином от сименса - SMTK.
8. Эмулятор ARM - simarm. Для детального анализа программ и прошивки.
9. Желательно знание и понимание языка С++, обьектов и тп.
10. Прямые руки (hands.dll) - обязательно.
11. Желание и свободное время - необходимо как воздух.

Мои скрипты и некоторые проги: idc_files.zip
Чтобы не качать SDK для работы скрипта rename.idc можно взять необходимые файлы здесь:
objdump.rar
cygwin1.zip
sx1_sdk_libs.exe

Все нижесказанное относится к прошивке WinSWUP fw 15 UK-DE-RU
========================================================================
0 - Прежде всего:
- читаем документацию по архитектуре процессора ARM, чтоб понятно было какие регистры есть, какие команды, какие условия переходов и тд.
- ставим патч для FCAMem
- желательно посмотреть на схему SX1, его омаповской части, чтоб представлять что к чему подключено.
========================================================================
1-Делаем полный образ диска Z.
Для этого есть два пути.
---------------------------------------------------------------------------
Первый (если есть ММС) - воспользуемся прогой от FCA00000 - FCAMem. С ее помощью считываем области памяти, каждую в отдельный файл. После сохранения каждого файла переименовываем mem.bin в чтото типа mem50000000.bin.
0x50000000 длина 16Mb (0x01000000) - сам диск Z
0x58000000 длина 6кб - регистры
0x58002000 длина 26кб - регистры
0x58009000 длина 2кб - регистры
0x5800A000 длина 2кб - регистры
0x5800B000 длина 2кб - регистры
0x5800C000 длина 16кб - регистры
0x40000000 длина 8кб - память ядра
0x41000000 длина 8кб - память ядра
0x80000000 длина 32кб - память ядра
0x80400000 длина 64кб - память ядра
---------------------------------------------------------------------------
Второй путь - использовние программы WSFFXBI.exe от PapuaSoft.
Открываем в меню File -> Open -> WinSWUP + XB?.exe файл SWUP прошивки.
Далее File -> Save -> XBI file (xbi).
Мы получили файл, содержащий в себе все части прошивки OMAP.
Далее распаковуем на части с помощью XBI_Extract (Serrge, Oslik.ru), получим следующие файлы:
- 07102004-K1_core.img - диск Z1
- 07102004-K1_SiemensvA114_z2.plf - диск Z2
- 07102004-K1_SiemensvA114_rolf.plf - образ ROLF (диск A)
- ibootcore_1_8.plf - iBoot
- K1_cdriv_cd_new_fsy.plf - LFFS (чистый диск С)
- SX1_15.xbz - сжатая прошивка EGold (телефонного процессора), c хешами и сигнатурами, распаковке пока не поддается.
Эти файлы имеют заголовки, в которых указаны адреса с которых они загружаются.
Для img файла заголовок занимает 0x100 байт, для plf - 0x0C0 байт. Поэтому при загрузке в иду заголовки удаляем.
---------------------------------------------------------------------------
Рекомендую скомбинировать оба пути чтоб иметь в иде и диск Z и содержимое оперативы.
Осторожно - после загрузки всего диска в Иду база будет занимать больше 100метров ! Не забывайте делать бекапы !

Рассмотрим карту памяти SX1 - физические (реальные) адреса.
//flash1 - CS0
0x0000 0000 - Z1 drive (Core-Img)
0x00F0 0000 - Z2 drive (Var)
0x00FF FFFF - Z2 drive end (Var)
//flash2 - CS1 - old phones
0x0400 0000 - iBoot (iBoot)
0x040A 0000 - drive A (ROLF)
0x0442 0000 - drive C (Lffs)
0x047F FFFF - drive C end

карта памяти SX1 - виртуальные адреса (в симбе).
//flash1
0x5000 0000 - Z1 drive (Core-Img)
0x50F0 0000 - Z2 drive (Var)

0x5800 0000 - регистры омапа мапятся сюда

Немного об ибуте. Назначение ибута - выполнить прошивку телефона с компьютера по USB интерфейсу. Plf образ который в прошивке нарезан на сегменты. К счастью в этом образе осталась отладочная информация - имена функций и переменных, по которым можно разбиратся с ибутом. Запускается он при нажатии дж.центр + красная кнопка, также если TP3008 = 1 или TP3007 = 1.
========================================================================
2 - загружаем файлы в IDA.
Полученные на предыдущем этапе файлы загружаем в иду по их адресам.
Первым в Иде открываем самый большой файл - от диска Z, ставим "Processor Type" в ARM, нажимаем Set, затем OK, далее Ида предлагает создать сегменты, ставим ROM start adress в 0x50000000, ROM size = 0x01000000, Loading adress = 0x50000000. Жмем ОК и ждем пока файл загрузится.
Дальше File->Load file->Additional binary file загружаем дополнительные части
(Z2, содержимое оперативы и тд.). Дальше рекомендую применить мои скрипты - поставить на ночь rename.idc - после этого примерно 50 процентов кода прошивки будет распознано и можно будет начинать чтолибо копать.
========================================================================
3 - Немного моих скриптов. (Внизу поста ссылка).
- rename.idc - скрипт размечает все файлы диска Z, для исполняемых размечаются таблицы экспортируемых функций, причем их названия берутся из СДК (не для всех конечно, а для тех, для которых они есть). Работает очень долго, поэтому лучше ставить на ночь :) Возможно придется подправить путь к lib файлам в скрипте !
- standart_regs.idc - скрипт обзывает все регистры OMAP.(см доки об OMAP5910)
- virtual_regs.idc - скрипт обзывает все регистры OMAP в виртуальном адресном пространстве.
- swi.idc - помечает адреса процедур обработчиков софтварного прерывания SWI.

Не стесняйтесь и заглядывайте в скрипты, в некоторых надо менять пути к файлам данных.
В связи с релизом файла со списком адресов всех функций для прошивки O2_14 от FCA00000, нужно использовать прежде всего его. Он подходит для нашей прошивки практически полностью. Только надо сравнивать начало файла в списке с началом в нашей прошивке - и если они не совпадают учитывать разницу.
========================================================================
4 - Структура диска Z
5000 0000 - "Буткор симбы" эта область при включении телефона находится с адреса 0, он и получает управление при включении, здесь настраивается все оборудование, частота процессора, тайминги памяти, проверяются нажатые клавиши, нужно ли запускать ибут, так же настраивается виртуальная память, и наконец запускается Симба, предположительно ekern.exe. При нажатии на клавиши форматирования диска С происходит стирание первого сектора флеша диска С (128 К), что является признаком необходимости форматирования.
5000 0080 - здесь лежит структура TRomHeader, ее описание находится в СДК, в e32rom.h, там же лежит описание заголовка исполняемых файлов с диска Z (TRomImageHeader).
5000 4000 - ekern.exe vectors. Сдесь находятся векторы прерывания для виртуального режима, также они находятся по виртуальному адресу 0.
5000 4040 - ekern.exe ....
50F0 0000 - variant image
50F2 4538 - каталог диска Z

Основные системные файлы, драйверы устройств, скомпилированы в режиме ARM, поскольку привелигерованные режимы работают только в нем. А остальные проги могут быть и в режиме Thumb.

Через команды SWI осуществляется вызов функций ядра из euser.dll, то есть связь юзермода с кернелмодом. Если в патче необходимо сделать чтолибо в режиме ядра то можно использовать SWI. Так сделан патч на переключение частоты процессора из симбы. Программа вызывает функцию User:SetDebugMask, которая как мне кажется не используется ни в одной программе, далее обработчик этой функции патчится чтоб вызывать SWI 0xEB, которое не используется в системе. А уже в обработчике этого прерывания можно делать все что угодно со всеми регистрами и всей памятью.
Еще одна проблема - как найти свободное место для размещения своего кода для патчей. Для маленьких вставок я использовал неиспользуемые места в прошиве. Но лучше для своих патчей взять какой либо файл, который не используется или не очень нужен, как например какая либо из стандартных мелодий.
========================================================================
5 - Пример работы для написания простого патча.
Пример моих действий при написании патча номер 61 -
; * Отменить очистку списков вызовов при смене SIM*
; * Disable_clear_logs_after_SIM_change*

В данном случае все просто, просматривая список функций в Sysap.app, я обратил внимание на интересное название, которое говорит само за себя.
50854844 ; CSysApAppUi::DoSimChangedFromPreviousBootL(void)
50854844 sub_50854844 ; CODE XREF: sub_50852460+332p
50854844 10 B5 PUSH {R4,LR}
50854846 03 F0 BL j_NewL__11CSimChanged ; CSimChanged::NewL(void)
5085484A 04 1C ADD R4, R0, #0
5085484C 03 F0 BL j_CleanShared__11CSimChanged ; CSimChanged::CleanShared(void)
50854850 00 2C CMP R4, #0
50854852 05 D0 BEQ loc_50854860
50854854 20 68 LDR R0, [R4]
50854856 82 68 LDR R2, [R0,#8]
50854858 20 1C ADD R0, R4, #0
5085485A 03 21 MOV R1, #3
5085485C 02 F0 BL sub_508571F8
50854860 loc_50854860 ; CODE XREF: sub_50854844+Ej
50854860 10 BC POP {R4}
50854862 01 BC POP {R0}
50854864 00 47 BX R0

Далее делаем пробный патч для отключения данной функции, для этого нам надо произвести немедленный возврат из нее.
Заменяем инструкцию по адресу :
50854846 BL j_NewL__11CSimChanged ; CSimChanged::NewL(void)
заменяем на возврат из процедуры, код берем здесь же, в конце процедуры :
50854860 10 BC POP {R4}
50854862 01 BC POP {R0}
50854864 00 47 BX R0

чтоб получить строку патча, нужны исходные данные - что заменять. Их берем из окна HEX view в Иде, для надежности нужно брать не менее 16 байт.
Получаем
- replace:03F01BFF041C03F01EFF002C05D0:10BC01BC0047
Далее прошиваем телефон с этим патчем и удостовериваемся что он работает.

_________________
Google Nexus 4 + Siemens SX1 McLaren


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 01, 2006 1:53 pm 
Не в сети
Z-Team moder
Z-Team moder
Аватара пользователя

Зарегистрирован: 30янв 30, 2003 1:25 am
Сообщения: 3206
Откуда: Kiev.UA
Тупые вопросы и сообщения в стиле "вау", "круто", "а как это сделать" итд Запрещены!!!
Вопросы можно задавать только по теме!
Учимся, делимся опытом, спрашиваем по теме.

_________________
Изображение
У носорога плохое зрение, но это вовсе не его проблемы ... Изображение...
Только ValeraVi имеет право распространять исходники своей программы.
Он есть правообладателем и единственным автором! Все вопросы к нему.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 02, 2006 5:38 am 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30июн 29, 2005 6:09 am
Сообщения: 279
Откуда: с. Кневичи
Вот та инфа которой мне когдато не хватало. А я обычно один файл загружаю - тот который расковырять надо.

Вчера нашел хороший ресурс
http://sobakator.samsfan.ru/knows_dissasembly.html
Все хорошо рассказано в двух словах, и не надо качать 12 метров (небось еще на английском)

Вопрос: rename.idc пишет имена функций или только ординалы ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 02, 2006 9:07 am 
Не в сети
Уважаемый
Уважаемый
Аватара пользователя

Зарегистрирован: 30окт 04, 2005 4:55 pm
Сообщения: 537
Откуда: СССР Минск
Было бы неплохо еще ссылки на все вышеописанные программы.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 02, 2006 11:01 am 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30дек 13, 2005 4:49 pm
Сообщения: 102
Я как понял, при использовании FCAMem. Сначало прошится надо чистой прошивкой, чтоб не каких изменений (установленных патчей) не было. А потом сливать bin. Валожи плиз ссылку на mem.bin из 15 прошивки.
IDA pro 4.8 http://www.mobile-world.ru/modules.php? ... les_id=339

FCAMem http://www.siemens-mobiles.org/componen ... tach,18198


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 02, 2006 11:06 am 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30июн 29, 2005 6:09 am
Сообщения: 279
Откуда: с. Кневичи
FCAMem можно на любую прошивку ставить (патченую/непатченую). Он сам из себя патч представляет, а прога это типа дополнение.

На самом деле я так и не нашел ему практического применения, проще юзать WSFFXBI & XBIExtract.

А за символы ему огромное мерси :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 02, 2006 4:02 pm 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30дек 13, 2005 4:49 pm
Сообщения: 102
Значит XBI выдернул, заголовки отрезал.
При загрузке в IDA, на какие адресса загружать:
07102004-K1_SiemensA114_z2.plf
07102004-K1_SiemensA114_rolf.plf
ibootcore_1_8.plf
K1_cdriv_cd_new_fsy.plf

я как понял:
07102004-K1_core.img---0х50000000
07102004-K1_SiemensA114_z2.plf---0х50F00000
а остальные куда???

может:
ibootcore_1_8.plf---0х54000000
07102004-K1_SiemensA114_rolf.plf---0х540A0000
K1_cdriv_cd_new_fsy.plf---0х54420000

Я прав? Попрате если не так.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 04, 2006 2:43 am 
Не в сети
Z-Team member
Z-Team member
Аватара пользователя

Зарегистрирован: 30авг 19, 2004 2:32 pm
Сообщения: 897
Nik2005 писал(а):
я как понял:
07102004-K1_core.img---0х50000000
07102004-K1_SiemensA114_z2.plf---0х50F00000
а остальные куда???

Это правильно.
Остальные файлы надо рассматривать отдельно.

ibootcore_1_8.plf - это образ ибута,немного запакованный, он работает независимо от симбиана и рассматривается отдельно, прошивается с адреса 0х04000000 (физического)
07102004-K1_SiemensA114_rolf.plf, K1_cdriv_cd_new_fsy.plf - это загружать никуда не надо

_________________
Google Nexus 4 + Siemens SX1 McLaren


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 04, 2006 10:55 am 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30июн 29, 2005 6:09 am
Сообщения: 279
Откуда: с. Кневичи
Все таки мне больше нравится по одному файлу исследовать...
Преимущества - анализ намного быстрее и список функций не так велик (не очень удобно искать не зная что среди 60000 строк). Назовите мне хоть одно преимущество загрузки всего дампа.

Подборка необходимого файла для пофайлового анализа:
Символы для uk-de-ru

Конвертилка и скрипт

В архиве сконвереный O2_14.symbol для uk-de-ru прошивки, сама конвертилка и скрипт именующие функции в файле. В скрипте ничего менять не надо, он сам спросит путь к файлу символов при первом запуске (а также если этого файла там потом не окажется).
Для анализа требуется все го лишь загрузить файл с убранным Enabled в Analysis, скрипт сам анализирует его в THUMB режиме.

ЗЫ. Уже поменялась :)


Последний раз редактировалось -=ZoRn=- 30фев 13, 2006 4:26 am, всего редактировалось 2 раз(а).

Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 04, 2006 4:10 pm 
Не в сети
Уважаемый
Уважаемый

Зарегистрирован: 30окт 08, 2003 10:12 am
Сообщения: 585
Откуда: Екатеринбург
маленькое предложение, тем кто смог правильно выгрузить память и загрузить все в иду с применением этих скриптов, не поленитесь выложите свою базу для начинающих, этим отпадет сразу куча вопросов и эта тема будет страницы на 3-4 меньше :) по опыту со сликом :)

_________________
Siemens SL45/Siemens SX1 FW15 (спёрт)/SonyEricsson P910i - MegaFon (Уральский Джи Эс Эм)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30фев 11, 2006 2:44 am 
Не в сети
Z-Team member
Z-Team member
Аватара пользователя

Зарегистрирован: 30авг 19, 2004 2:32 pm
Сообщения: 897
Зачем загружать сразу всю прошивку ? Для того чтобы все ссылки были связаны, то есть нажимая в Иде ENTER на ссылке которая ведет в другой файл (через заглушку конечно), попадаем сразу в этот файл, нет необходимости загружать еще одну иду. И делая поиск в такой базе поиск происходит сразу по всем файлам.
Но конечно каждый работает как ему удобно :)

Вот мой скрипт для списка от FCA00000 :rename_fca.zip

Вот исходник патча для онлайн изменения частоты проца - overclock_omap_v2_3.sxp overclock_2_3_src.zip
Компилится в Keil Vision 3.

_________________
Google Nexus 4 + Siemens SX1 McLaren


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30мар 07, 2006 2:21 am 
Не в сети
Z-Team member
Z-Team member
Аватара пользователя

Зарегистрирован: 30авг 19, 2004 2:32 pm
Сообщения: 897
Вот на досуге написал прогу для тех кто хочет редактировать ресурсы с диска Z. Назад упаковать можно с помощью reszip мз СДК.

GUI версия. (для просмотра, показывает реальные идентификаторы ресурсов, если он есть)
RscUnpack.zip

Консольная версия. Она просто сохраняет в несжатый формат.
RscUnpackCon.zip

_________________
Google Nexus 4 + Siemens SX1 McLaren


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30мар 09, 2006 4:52 am 
Не в сети
Местный
Местный
Аватара пользователя

Зарегистрирован: 30июн 29, 2005 6:09 am
Сообщения: 279
Откуда: с. Кневичи
Мини прожка для групповой распаковки ресурсов. Выбираем SourceDir, DestinationDir и все :) Проверка на запакованность проверяется сначала так *.r?? а потом первый байт проверяется на 4 (не все ресурсы на З: запакованы). В DestinationDir сохраняется структура каталогов SourceDir... Для работы необходим RSCUnPackCon
GroupRSCUnPack.rar


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30мар 09, 2006 2:20 pm 
Не в сети
Уже Не Новичок
Уже Не Новичок

Зарегистрирован: 30окт 11, 2005 9:13 pm
Сообщения: 41
Хорошая дока по ARM-программированию

http://kokornov.pisem.net/ARM.rar


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 30мар 15, 2006 2:58 pm 
Не в сети
Уже Не Новичок
Уже Не Новичок
Аватара пользователя

Зарегистрирован: 30дек 08, 2004 6:07 pm
Сообщения: 37
Откуда: Minsk-Vilnius
ìîæåò ó êîãî åñòü äîêè ïî àðõèòåêòóðå ñìàðòôîíîâ, ñàìà òåîðèÿ? èëè îñíîâíûå ìîìåíòû àðì ïðîöåâ? õì. èùó ïðèíöèïû, áåç îñîáûõ óãëóáëåíèé


Пожаловаться на это сообщение
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Grifon07 и гости: 0


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Black by Daz (FI) :: Ported to phpBB3 by NeXur.
Русская поддержка phpBB

[ Time : 0.062s | 11 Queries | GZIP : Off ]